home *** CD-ROM | disk | FTP | other *** search
/ HTBasic 9.3 / HTBasic 9.3.iso / 83win / data1.cab / Basic_Plus_Examples / CYCLPUSH < prev    next >
Encoding:
Text File  |  2001-03-02  |  3.8 KB  |  91 lines

  1. 10    ! ***************************************************************
  2. 20    ! Example: Cyclical PUSHBUTTON
  3. 30    !
  4. 40    ! This example implements an object which cycles through its values
  5. 50    ! each time it is pushed. It uses a PUSHBUTTON widget. When the button
  6. 60    ! is pressed, the "LABEL" and "STATE" change. Any number of choices
  7. 70    ! could be used. This type of control, however, works best if the
  8. 80    ! number of choices is kept small.
  9. 90    !
  10. 100   ! ***************************************************************
  11. 110   !
  12. 120       INTEGER Tab_1,Tab_1_cols,Tab_2,Tab_2_cols,Width
  13. 130       INTEGER States,State,I
  14. 140       DIM Labels$(0:10)[10]
  15. 150   !
  16. 160       Tab_1=10
  17. 170       Tab_1_cols=25
  18. 180       Tab_2=Tab_1+(Tab_1_cols+1)*CHRX
  19. 190       Tab_2_cols=10
  20. 200       Width=Tab_2+(Tab_2_cols+3)*CHRX+Tab_1
  21. 210       States=5
  22. 220   !
  23. 230   ! Create labels for each state
  24. 240   !
  25. 250       FOR I=BASE(Labels$,1) TO BASE(Labels$,1)+SIZE(Labels$,1)-1
  26. 260           Labels$(I)="State "&VAL$(I)
  27. 270       NEXT I
  28. 280   !
  29. 290   ! Create widgets
  30. 300   !
  31. 310       ASSIGN @Panel TO WIDGET "PANEL";SET ("X":100,"Y":50,"WIDTH":Width,"HEIGHT":10*CHRY,"TITLE":" Example: Cyclical PUSHBUTTON")
  32. 320       CONTROL @Panel;SET ("SYSTEM MENU":"Quit")
  33. 330       ON EVENT @Panel,"SYSTEM MENU" GOTO Finis
  34. 340   !
  35. 350       ASSIGN @Cyclic_label TO WIDGET "LABEL";PARENT @Panel,SET ("X":10,"Y":Tab_1,"COLUMNS":Tab_1_cols,"BORDER":0)
  36. 360       CONTROL @Cyclic_label;SET ("VALUE":"Multi-state PUSHBUTTON: ","JUSTIFICATION":"RIGHT")
  37. 370       ASSIGN @Cyclic TO WIDGET "PUSHBUTTON";PARENT @Panel,SET ("X":Tab_2,"Y":10,"COLUMNS":Tab_2_cols)
  38. 380       CONTROL @Cyclic;SET ("STATES":States,"LABELS":Labels$(*),"PANEL DEFAULT":1)
  39. 390   !
  40. 400       ASSIGN @States_label TO WIDGET "LABEL";PARENT @Panel,SET ("X":Tab_1,"Y":3*CHRY,"COLUMNS":Tab_1_cols,"BORDER":0)
  41. 410       CONTROL @States_label;SET ("JUSTIFICATION":"RIGHT","VALUE":"Number of States (1-"&VAL$(SIZE(Labels$,1))&"): ")
  42. 420       ASSIGN @States TO WIDGET "NUMBER";PARENT @Panel,SET ("X":Tab_2,"Y":3*CHRY,"COLUMNS":Tab_2_cols)
  43. 430       CONTROL @States;SET ("FORMAT":"SHORT INTEGER","MINIMUM":1,"MAXIMUM":SIZE(Labels$,1),"VALUE":States)
  44. 440   !
  45. 450       ASSIGN @State_label TO WIDGET "LABEL";PARENT @Panel,SET ("X":Tab_1,"Y":5*CHRY,"COLUMNS":Tab_1_cols,"BORDER":0)
  46. 460       CONTROL @State_label;SET ("JUSTIFICATION":"RIGHT","VALUE":"Current State: ")
  47. 470       ASSIGN @State TO WIDGET "NUMBER";PARENT @Panel,SET ("X":Tab_2,"Y":5*CHRY,"COLUMNS":Tab_2_cols)
  48. 480       CONTROL @State;SET ("FORMAT":"SHORT INTEGER","MINIMUM":0,"MAXIMUM":States-1,"VALUE":0)
  49. 490   !
  50. 500   ! Define events
  51. 510   !
  52. 520       ON EVENT @Cyclic,"ACTIVATED",1 GOSUB Disp_state
  53. 530       ON EVENT @States,"RETURN" GOSUB Set_states
  54. 540       ON EVENT @States,"DONE" GOSUB Reset_states
  55. 550       ON EVENT @State,"RETURN" GOSUB Set_state
  56. 560       ON EVENT @State,"DONE" GOSUB Reset_state
  57. 570   !
  58. 580       LOOP
  59. 590           WAIT FOR EVENT
  60. 600       END LOOP
  61. 610   !
  62. 620   ! Event branches
  63. 630   !
  64. 640  Set_states:!
  65. 650       STATUS @States;RETURN ("VALUE":States)
  66. 660       CONTROL @State;SET ("MAXIMUM":States-1)
  67. 670       CONTROL @Cyclic;SET ("STATES":States)
  68. 680       RETURN
  69. 690   !
  70. 700  Reset_states:!
  71. 710       STATUS @Cyclic;RETURN ("STATES":States)
  72. 720       CONTROL @States;SET ("VALUE":States)
  73. 730       RETURN
  74. 740   !
  75. 750  Set_state:!
  76. 760       STATUS @State;RETURN ("VALUE":State)
  77. 770       CONTROL @Cyclic;SET ("STATE":State)
  78. 780       RETURN
  79. 790   !
  80. 800  Reset_state:!
  81. 810       STATUS @Cyclic;RETURN ("STATE":State)
  82. 820       CONTROL @State;SET ("VALUE":State)
  83. 830       RETURN
  84. 840   !
  85. 850  Disp_state:!
  86. 860       STATUS @Cyclic;RETURN ("STATE":State)
  87. 870       CONTROL @State;SET ("VALUE":State)
  88. 880       RETURN
  89. 890   !
  90. 900  Finis: END
  91.